# ------------------------------------------
# 将字符型向量转换为数值型向量
# ------------------------------------------

character_vector <- c("1", "2", "3", "4", "5")   # 创建一个字符型向量赋值给character_vector
character_vector  # 查看character_vector
is.character(character_vector)  # 通过is.character()函数判断character_vector是否为字符型 
numeric_vector <- as.numeric(character_vector)  # 通过as.numeric()函数将character_vector转换为数值型 
numeric_vector  # 查看numeric_vector
is.numeric(numeric_vector)  # 通过is.numeric()函数判断numeric_vector是否为数值型
is.integer(numeric_vector)  # 通过is.integer()函数判断numeric_vector是否为整数型
is.double(numeric_vector)  # 通过is.double()函数判断numeric_vector是否为浮点型

integer_vector <- as.integer(numeric_vector)  # 通过as.integer()函数转换numeric_vector为整数型
integer_vector  # 查看integer_vector
is.integer(integer_vector)  # 通过is.integer()函数判断integer_vector是否为整数型

# ------------------------------------------
# 自动转换
# ------------------------------------------

integer_number <- 5L  # 将一个整数型数值赋值给integer_number
double_number <- 3.14 # 将一个浮点型数值赋值给double_number

is.integer(integer_number)  # 通过is.integer()函数判断integer_number是否为整数型 
is.double(double_number)    # 通过is.double()函数判断double_number是否为浮点型 

number <- integer_number + double_number  # 将integer_number和double_number求和并赋值给number
                
is.integer(number)  # 通过is.integer()函数判断number是否为整数型
is.double(number) # 通过is.double()函数判断number是否为浮点型 

number <- as.double(integer_number) + double_number   # 实际的运算逻辑

my_vector <- c(3, TRUE, "China")  # 创建一个包含不同数据类型的向量
my_vector   # 查看my_vector
is.character(my_vector)   # 通过is.character()函数判断my_vector是否为字符型 

# ------------------------------------------
# 名义型因子型变量
# ------------------------------------------

my_vector2 <- c("male", "female", "female", "male", "male")  # 创建一个字符型向量并赋值给my_vector2
my_vector2  # 查看my_vector2
is.character(my_vector2)  # 通过is.character()函数判断my_vector2是否为字符型

my_factor <- factor(my_vector2)   # 通过factor()函数将my_vector2转换为因子型并赋值给my_factor
my_factor   # 查看my_factor
is.factor(my_factor)    # 通过is.factor()函数判断my_factor是否为因子型

# ------------------------------------------
# 有序型因子型变量
# ------------------------------------------

my_vector3 <- c("Poor", "Improved", "Excellent")  # 创建一个字符型向量并赋值给my_vector3

my_factor1 <- factor(my_vector3, ordered = TRUE)  # 通过factor()函数将my_vector3转换为因子型,进行排序并赋值给my_factor1
my_factor1  # 查看my_factor1

my_factor1 <- factor(my_vector3, ordered = TRUE, levels = c("Poor", "Improved", "Excellent")) #通过factor()函数将my_vector3转换为因子型,按指定顺序排序并赋值给my_factor1
my_factor1  # 查看my_factor1
